﻿using System;
using System.Collections.Generic;
using BCCommon;
using BCDto.MySql.Admin;
using BCDto.OA.Attendance.AttendanceClass;

namespace BCService.OA.Attendance.AttendanceClass
{
    /// <summary>
    /// 考勤班次信息服务
    /// </summary>
    public interface IAttendanceClassService
    {
        /// <summary>
        /// 获取考勤班次信息
        /// </summary>
        /// <param name="classId">班次Id</param>
        /// <returns></returns>
        AttendanceClassDto GetAttendanceClassByClassId(long classId);

        /// <summary>
        ///删除考勤班次信息
        /// </summary>
        /// <param name="admin">当前管理员</param>
        /// <param name="classId">班次Id</param>
        /// <returns></returns>
        int Delete(AdminDto admin, long classId);

        /// <summary>
        /// 分页获取班次信息
        /// </summary>
        /// <param name="ascending">升序</param>
        /// <param name="pageIndex">当前页码</param>
        /// <param name="pageSize">当前页面大小</param>
        /// <param name="className">班次名称</param>
        /// <returns></returns>
        PageableList<AttendanceClassDto> GetList(bool? ascending, int pageIndex, int pageSize, string className);

        /// <summary>
        /// 新创建班次信息
        /// </summary>
        /// <param name="admin">当前登录管理员</param>
        /// <param name="dto">请求的班次信息</param>
        /// <returns></returns>
        AttendanceClassDto Create(AdminDto admin, AttendanceClassRequestDto dto);

        /// <summary>
        /// 修改指定的班次信息
        /// </summary>
        /// <param name="admin">当前管理员</param>
        /// <param name="classId">班次Id</param>
        /// <param name="attendanceClassRequestDto">修改信息</param>
        /// <returns></returns>
        AttendanceClassDto Update(AdminDto admin, long classId, AttendanceClassRequestDto attendanceClassRequestDto);

        /// <summary>
        /// 获取考勤班次以及班次设置信息
        /// </summary>
        /// <param name="classId">班次Id</param>
        /// <returns></returns>
        List<AttendanceClassViewDto> GetAttendanceClassWithSettings(long classId);
    }
}
